package com.ruoyi.course.mapper;

import com.ruoyi.common.core.domain.entity.SysPeriod;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 课时管理 数据层
 * 
 * @author YJF
 */
public interface SysPeriodMapper
{
    /**
     * 查询课时管理数据
     * 
     * @param period 课时信息
     * @return 课时信息集合
     */
    public List<SysPeriod> selectPeriodList(SysPeriod period);

    /**
     * 根据课时ID查询信息
     * 
     * @param periodId 课时ID
     * @return 课时信息
     */
    public SysPeriod selectPeriodById(Long periodId);

    /**
     * 根据ID查询所有子课时
     * 
     * @param periodId 课时ID
     * @return 课时列表
     */
    public List<SysPeriod> selectChildrenPeriodById(Long periodId);

    /**
     * 根据ID查询所有子课时（正常状态）
     * 
     * @param periodId 课时ID
     * @return 子课时数
     */
    public int selectNormalChildrenPeriodById(Long periodId);

    /**
     * 是否存在子节点
     * 
     * @param periodId 课时ID
     * @return 结果
     */
    public int hasChildByPeriodId(Long periodId);

    /**
     * 查询课时是否存在课程
     * 
     * @param periodId 课时ID
     * @return 结果
     */
    public int checkPeriodExistCourse(Long periodId);

    /**
     * 校验课时名称是否唯一
     * 
     * @param periodName 课时名称
     * @param parentId 父课时ID
     * @return 结果
     */
    public SysPeriod checkPeriodNameUnique(@Param("periodName") String periodName, @Param("parentId") Long parentId);

    /**
     * 新增课时信息
     * 
     * @param period 课时信息
     * @return 结果
     */
    public int insertPeriod(SysPeriod period);

    /**
     * 修改课时信息
     * 
     * @param period 课时信息
     * @return 结果
     */
    public int updatePeriod(SysPeriod period);

    /**
     * 修改所在课时正常状态
     * 
     * @param periodIds 课时ID组
     */
    public void updatePeriodStatusNormal(Long[] periodIds);

    /**
     * 修改子元素关系
     * 
     * @param periods 子元素
     * @return 结果
     */
    public int updatePeriodChildren(@Param("periods") List<SysPeriod> periods);

    /**
     * 删除课时管理信息
     * 
     * @param periodId 课时ID
     * @return 结果
     */
    public int deletePeriodById(Long periodId);
}
